package com.shxzz.shortlink.project.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.shxzz.shortlink.project.dao.entity.LinkDO;
import com.shxzz.shortlink.project.dto.req.RecycleBinPageReqDTO;
import com.shxzz.shortlink.project.dto.req.RecycleBinRemoveReqDTO;
import com.shxzz.shortlink.project.dto.req.RecycleBinRestoreReqDTO;
import com.shxzz.shortlink.project.dto.req.RecycleBinSaveReqDTO;
import com.shxzz.shortlink.project.dto.resp.RecycleBinLinkPageRespDTO;

/**
 * @author shxzz
 * @create 2023-12-25-18:52
 * @description 回收站管理接口层
 */
public interface RecycleBinService extends IService<LinkDO> {
    /**
     * 移入回收站
     * @param requireParam 移入回收站短链接参数
     */
    void moveToRecycleBin(RecycleBinSaveReqDTO requireParam);

    /**
     * 回收站列表
     *
     * @param requireParam 回收站分页查询参数
     * @return 分页查询结果
     */
    IPage<RecycleBinLinkPageRespDTO> selectPageRecycleBin(RecycleBinPageReqDTO requireParam);

    /**
     * 回收站还原
     * @param requireParam 回收站还原短链接请求参数
     */
    void restoreRecycleBinLink(RecycleBinRestoreReqDTO requireParam);

    /**
     * 回收站彻底删除
     * @param requireParam 从回收站删除链接请求参数
     */
    void removeRecycleBinLink(RecycleBinRemoveReqDTO requireParam);
}
